package com.cysoft.third.echarts.component.yAxis;

/**
 * @author 玖零
 * @version v0.0.1
 * @project cysoft-third-echarts
 * @package com.cysoft.third.echarts.component.yAxis
 * @date 2025/3/13 11:36
 * @desc
 */
public class MinorTick {

    /**
     * 是否显示次刻度线。
     */
    private Boolean show;

    /**
     * 次刻度线分割数，默认会分割成 5 段。
     */
    private Integer splitNumber = 5;

    /**
     * 次刻度线的长度。
     */
    private Integer length = 3;

    /**
     * 次刻度线的样式设置。
     */
    private LineStyle lineStyle;
}

/**
 * 坐标轴刻度标签的相关设置。
 */
@Data
class AxisLabel implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 是否显示刻度标签。
     */
    private Boolean show = true;

    /**
     * 坐标轴刻度标签的显示间隔，在类目轴中有效。
     * 默认会采用标签不重叠的策略间隔显示标签。可以设置成 0 强制显示所有标签。
     * 如果设置为 1，表示『隔一个标签显示一个标签』，如果值为 2，表示隔两个标签显示一个标签，以此类推。
     * 可以用数值表示间隔的数据，也可以通过回调函数控制。
     */
    private Object interval = "auto";

    /**
     * 刻度标签是否朝内，默认朝外。
     */
    private Boolean inside;

    /**
     * 刻度标签旋转的角度，在类目轴的类目标签显示不下的时候可以通过旋转防止标签之间重叠。
     * 旋转的角度从 -90 度到 90 度。
     */
    private Integer rotate;

    /**
     * 刻度标签与轴线之间的距离。
     */
    private Integer margin = 8;

    /**
     * 刻度标签的内容格式器，支持字符串模板和回调函数两种形式。
     */
    private Object formatter;

    /**
     * 是否显示最小 tick 的 label。可取值 true, false, null。默认自动判定（即如果标签重叠，不会显示最小 tick 的 label）。
     */
    private Boolean showMinLabel;

    /**
     * 是否显示最大 tick 的 label。可取值 true, false, null。默认自动判定（即如果标签重叠，不会显示最大 tick 的 label）。
     */
    private Boolean showMaxLabel;

    /**
     * 从 v5.5.0 开始支持，最小的坐标刻度标签的对齐方式。如果设置为 null，则和其他标签一致。
     */
    private String verticalAlignMinLabel;

    /**
     * 从 v5.5.0 开始支持，最大的坐标刻度标签的对齐方式。如果设置为 null，则和其他标签一致。
     */
    private String verticalAlignMaxLabel;

    /**
     * 从 v5.2.0 开始支持，是否隐藏重叠的标签。
     */
    private Boolean hideOverlap;

    /**
     * 从 v5.5.1 开始支持，自定义要显示的标签位置。
     */
    private Object customValues;

    /**
     * 刻度标签文字的颜色，默认取 axisLine.lineStyle.color。支持回调函数。
     */
    private Object color;

    /**
     * 文字字体的风格。可选：'normal'，'italic'，'oblique'
     */
    private String fontStyle = "normal";

    /**
     * 文字字体的粗细。可选：'normal'，'bold'，'bolder'，'lighter'，100 | 200 | 300 | 400...
     */
    private Object fontWeight = "normal";

    /**
     * 文字的字体系列。还可以是 'serif' , 'monospace', 'Arial', 'Courier New', 'Microsoft YaHei', ...
     */
    private String fontFamily = "sans-serif";

    /**
     * 文字的字体大小。
     */
    private Integer fontSize = 12;

    /**
     * 文字水平对齐方式，默认自动。可选：'left'，'center'，'right'
     * rich 中如果没有设置 align，则会取父层级的 align。
     */
    private String align;

    /**
     * 文字垂直对齐方式，默认自动。可选：'top'，'middle'，'bottom'
     * rich 中如果没有设置 verticalAlign，则会取父层级的 verticalAlign。
     */
    private String verticalAlign;

    /**
     * 行高。rich 中如果没有设置 lineHeight，则会取父层级的 lineHeight。
     */
    private Integer lineHeight;

    /**
     * 文字块背景色。可以使用颜色值，例如：'#123234', 'red', 'rgba(0,23,11,0.3)'。
     * 也可以直接使用图片。当使用图片的时候，可以使用 width 或 height 指定高宽，也可以不指定自适应。
     */
    private Object backgroundColor = "transparent";

    /**
     * 文字块边框颜色。
     */
    private String borderColor;

    /**
     * 文字块边框宽度。
     */
    private Integer borderWidth;

    /**
     * 文字块边框描边类型。可选：'solid'，'dashed'，'dotted'
     * 自 v5.0.0 开始，也可以是 number 或者 number 数组，用以指定线条的 dash array，配合 borderDashOffset 可实现更灵活的虚线效果。
     */
    private Object borderType = "solid";

    /**
     * 从 v5.0.0 开始支持，用于设置虚线的偏移量，可搭配 borderType 指定 dash array 实现灵活的虚线效果。
     */
    private Integer borderDashOffset;

    /**
     * 文字块的圆角。
     */
    private Object borderRadius;

    /**
     * 文字块的内边距。例如：padding: [3, 4, 5, 6]：表示 [上, 右, 下, 左] 的边距。
     * padding: 4：表示 padding: [4, 4, 4, 4]。padding: [3, 4]：表示 padding: [3, 4, 3, 4]。
     * 注意，文字块的 width 和 height 指定的是内容高宽，不包含 padding。
     */
    private Object padding;

    /**
     * 文字块的背景阴影颜色。
     */
    private String shadowColor = "transparent";

    /**
     * 文字块的背景阴影长度。
     */
    private Integer shadowBlur;

    /**
     * 文字块的背景阴影 X 偏移。
     */
    private Integer shadowOffsetX;

    /**
     * 文字块的背景阴影 Y 偏移。
     */
    private Integer shadowOffsetY;

    /**
     * 文本显示宽度。
     */
    private Integer width;

    /**
     * 文本显示高度。
     */
    private Integer height;

    /**
     * 文字本身的描边颜色。
     */
    private String textBorderColor;

    /**
     * 文字本身的描边宽度。
     */
    private Integer textBorderWidth;

    /**
     * 文字本身的描边类型。可选：'solid'，'dashed'，'dotted'
     * 自 v5.0.0 开始，也可以是 number 或者 number 数组，用以指定线条的 dash array，配合 textBorderDashOffset 可实现更灵活的虚线效果。
     */
    private Object textBorderType = "solid";

    /**
     * 从 v5.0.0 开始支持，用于设置虚线的偏移量，可搭配 textBorderType 指定 dash array 实现灵活的虚线效果。
     */
    private Integer textBorderDashOffset;

    /**
     * 文字本身的阴影颜色。
     */
    private String textShadowColor = "transparent";

    /**
     * 文字本身的阴影长度。
     */
    private Integer textShadowBlur;

    /**
     * 文字本身的阴影 X 偏移。
     */
    private Integer textShadowOffsetX;

    /**
     * 文字本身的阴影 Y 偏移。
     */
    private Integer textShadowOffsetY;

    /**
     * 文字超出宽度是否截断或者换行。配置 width 时有效。
     * 'truncate' 截断，并在末尾显示 ellipsis 配置的文本，默认为...
     * 'break' 换行
     * 'breakAll' 换行，跟 'break' 不同的是，在英语等拉丁文中，'breakAll' 还会强制单词内换行
     */
    private String overflow = "none";

    /**
     * 在 overflow 配置为 'truncate' 的时候，可以通过该属性配置末尾显示的文本。
     */
    private String ellipsis = "...";

    /**
     * 在 rich 里面，可以自定义富文本样式。利用富文本样式，可以在标签中做出非常丰富的效果。
     */
    private Object rich;
}
